Postfix+Dovecotによるメールサーバ構築
渡辺です。
定番ネタなのであちこちに情報はあるかと思いますが、Amazon Linux on EC2にPostfix+Dovecotでメールサーバを構築したので覚え書きです。
構成
Amazon Linux上の構築します。 ドメインはexample.com、メールサーバは mail.example.com、メールアドレスが user@example.com とします。 また、認証はLinuxのユーザ認証と同じユーザ名/パスワードを利用するとします。 今回はSSLの設定は行いません。
EC2インスタンスの準備
Amazon LinuxでEC2インスタンスをLaunchします。
セキュリティグループの設定としては、SSHログインできることと、POP3(110番ポート)及びにSMTP(25番ポート)を開けておきます。 また、グローバルIPが必要となりますので、Elastic IPを割り当て置きましょう。
Route53
Route53のHosted ZoneにメールサーバのAレコードとMXレコードを追加します。 mail.example.com(Aレコード)のValueはメールサーバのIPアドレス、MXレコードにのValueにはmail.example.comを指定してください。
準備ができたならば、SSHでログインしてサーバをセットアップします。
postfixの設定
メールの送受信はpostfixで行います。
インストール
$sudo yum -y install postfix
設定
/etc/postfix/main.cf を設定します。
myhostname
メールサーバのホスト名(mail.example.com)を設定します。
myhostname = mail.example.com
mydomain
メールアドレスで利用するドメイン(example.com)を設定します。
mydomain = example.com
myorigin
ローカルから配信されたメールは、example.comのメールであると認識させるための設定です。
myorigin = $mydomain
mydestination
このメールサーバが自分宛のメールであると認識するためのドメイン名を設定します。 設定としては$mydomainだけでも充分ですが、お作法として$myhostname, localhost.$mydomain, localhostも追加してあります。
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
inet_interfaces
ローカル以外から配信されたメールも受信する設定です。
inet_interfaces = all
mynetworks
VPC全体を信頼するネットワークとして設定します。
mynetworks = 10.0.0.0/16, 127.0.0.0/8
home_mailbox
メールの保存形式をメールディレクトリ形式に設定します。 この設定を行うことで、メールは宛先ユーザのホームディレクトリ(user@example.cpmならば、/home/user/)のMaildirディレクトリに保存されます。
home_mailbox = Maildir/
SMTPサーバの認証設定
認証にはsaslauthdを利用するため、そのための設定を追加します。
smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = $myhostname smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination
saslauthdの起動
認証用のデーモンであるsaslauthdを起動します。
$ sudo service saslauthd start $ sudo chkconfig saslauthd on
postfixの起動
デフォルトのMTAをpostfixに変更し、sendmailの停止とpostfixの起動を行います。
$ sudo alternatives --config mta $ sudo service sendmail stop $ sudo chkconfig sendmail off $ sudo service postfix start $ sudo chkconfig postfix on
ユーザの作成
メールアドレスとして利用するためのユーザを作成します。
$ sudo useradd user $ sudo passwd user
作成したユーザにsuし、メールディレクトリを作成します。
$ su - user $ mkdir Maildir $ exit
メール受信の確認
GMailなどから、user@example.comにメールを送信し、/home/user/Maildirにファイルが追加されることを確認します。 追加されない場合は、エラーメール(戻ってきている場合)や、ログ(/var/log/maillog)を確認しましょう。
メール送信の確認
OutlookやThunderbirdなどのメールクライアントを利用し、アカウントを設定します。 SMTPサーバとして、mail.example.comを指定し、作成したユーザとそのユーザのパスワードを設定してください。 設定できたならば、GMailなどにテストメールを送信し、送信できることを確認しましょう。 送信エラーとなる場合は、受信と同様にログ(/var/log/maillog)を確認してください。
Dovecotの設定
Postfixを設定すればメールの送受信は完了です。 しかし、実際にはOutlook等のメールクライアントからメールを読む必要があるため、POPサーバを起動し、クライアントでメールを受信できるように設定します。
インストール
yum -y install devecot
設定
Dovecotの設定はほとんど変更する必要はありません。
/etc/dovecot/conf.d/10-mail.conf
メールの保存場所をホームディレクトリのMaildirに設定します。
mail_location = maildir:~/Maildir
/etc/dovecot/conf.d/10-auth.conf
認証方法にloginを追加します。
auth_mechanisms = plain login
Divecotの起動
$ sudo service dovecot start $ sudo chkconfig dovecot on
メール受信の確認
Outlook等でメールが受信できることを確認してください。 エラーとなる場合は、ログ(/var/log/maillog)を確認してください。
メール送信エラー対策
ここまで出来ればメールサーバとして動作可能です。
が、このまま運用をはじめると、メールが届かなかったり、スパム扱いされたりする可能性があります。 AWSのWebサイトでメール送信制限の解除申請を行ってください。 詳細は、Amazon EC2 Eメール送信ベストプラクティスをご確認ください。